#ifndef __BSP_JOYSTICK_H__
#define __BSP_JOYSTICK_H__

/*********************************************************************
 * INCLUDES
 */

#ifdef __cplusplus
extern "C" {
#endif

/*********************************************************************
 *  EXTERNAL VARIABLES
 */

/*********************************************************************
 * MACROS
 */

#define JOY_OK  0
#define JOY_ERR 1

#define JOY_EVT_BUTTON  0x00000001
#define JOY_EVT_AXIS    0x00000002
#define JOY_EVT_CONN    0x00000004
#define JOY_EVT_DISCONN 0x00000008

/*********************************************************************
 * TYPES
 */

typedef int (*joy_callback_t)(void *pArg);
typedef enum _joy_state
{
    JOY_IDLE,
    JOY_CONNECT,
    JOY_READY,
    JOY_RUN,
    JOY_RECOVERY,
    JOY_STOP,
    JOY_ERROR,
} JOY_STATE_E;

typedef struct _joy_event
{
    unsigned int uiType;
    int iNumber;
    int iValue;
} JOY_EVENT_S;

/*********************************************************************
 * FUNCTIONS
 */

/**
 *   @Description: 与手柄建立连接
 *   @param: pcJoyName - 手柄设备名称
 *   @return ：错误信息
 */
int JOY_Start(char *pcJoyName);

/**
 *   @Description: 与手柄断开连接
 *   @param: NA
 *   @return ：错误信息
 */
int JOY_Stop(void);

/**
 *   @Description: 注册事件回调函数
 *   @param: pfJoyCallback - 回调函数指针
 *   @return ：错误信息
 */
int JOY_RegisterCallback(joy_callback_t pfJoyCallback);

#ifdef __cplusplus
}
#endif /* end of __cplusplus */

#endif

/************************************** The End Of File **************************************/




